package com.u1zz.zeus.module.iot.dal.dataobject.product;

import com.u1zz.zeus.module.iot.dal.dataobject.productcategory.ProductCategoryDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.u1zz.zeus.framework.mybatis.core.dataobject.BaseDO;

/**
 * 产品 DO
 *
 * @author u1zz
 */
@TableName("iot_product")
@KeySequence("iot_product_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductDO extends BaseDO {

    /**
     * id
     */
    @TableId
    private Long id;
    /**
     * 所属品类
     */
    private Long categoryId;
    /**
     * 产品标识
     */
    private String productKey;
    /**
     * 产品名称
     */
    private String productName;
    /**
     * 产品密钥
     */
    private String productSecret;
    /**
     * 消息协议
     *
     * 枚举 {@link TODO iot_transport_protocol 对应的类}
     */
    private String messageProtocol;
    /**
     * 传输协议
     *
     * 枚举 {@link TODO iot_transport_protocol 对应的类}
     */
    private String transportProtocol;
    /**
     * 设备类型
     *
     * 枚举 {@link TODO iot_device_type 对应的类}
     */
    private String deviceType;
    /**
     * 认证方式
     *
     * 枚举 {@link TODO iot_auth_type 对应的类}
     */
    private String authType;
    /**
     * 产品描述
     */
    private String description;
    /**
     * 图片地址
     */
    private String icon;
    /**
     * 物模型
     */
    private String metadata;
    /**
     * 是否生成物模型表：0=否，1=是
     */
    private Integer metadataTable;
    /**
     * 发布状态
     *
     * 枚举 {@link TODO iot_product_status 对应的类}
     */
    private String status;
    /**
     * 该产品下的设备数量
     */
    private Long deviceCount;

    @TableField(exist = false)
    private String categoryName;

}